package src.main.java.modules.container;

import java.lang.reflect.Type;
import java.rmi.RemoteException;
import java.util.HashMap;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import src.main.java.entity.ClienteTO;

import cartaocredito.CartaocreditoPortTypeProxy;

public class CartaoDeCreditoCaller {
	
	private static final String TOKEN = "4";

	public static Integer doTransaction(Double valorTotal, String brand, Long numeroCartao, Integer codigoCartao, String dataValidade, ClienteTO cliente){
		Integer retorno = -1;
		CartaocreditoPortTypeProxy proxy = new CartaocreditoPortTypeProxy();
		proxy.setEndpoint("http://www.chainreactor.net/services/nusoap/WebServer.php");
		try {
			String retornoModulo = proxy.doTransaction(TOKEN, valorTotal.toString(), 
					brand, numeroCartao.toString(), cliente.getNome(), cliente.getCpf().toString(), 
					codigoCartao.toString(), dataValidade, "1");
			if(retornoModulo != null && retornoModulo.contains("\"success\":\"1\"")){
				Type mapType = new TypeToken<HashMap<String, Integer>>() {}.getType(); 
				HashMap<String, Integer> map = new Gson().fromJson(retornoModulo, mapType);
				Integer codigoTransacao = map.get("transaction_id");
				if(codigoTransacao != null){
					retorno = codigoTransacao;
				}
			}
		}catch (RemoteException e){
			e.printStackTrace();
		}
		return retorno;
	}
}
